#ifndef DSP_INCLUDE_SCI_H
#define DSP_INCLUDE_SCI_H

/*GPIO18 -- Sci_b_TX    GPIO19 -- Sci_b_RX*/
#define TX_BUFFER_MAX_BYTES    256
#define RX_BUFFER_MAX_BYTES    256

enum SCI_COM
{
    SCI_A = 0,SCI_B,SCI_C,SCI_D
};

enum COM_STATUS
{
    RX_BUSY = 0,RX_IDLE,TX
};

enum TX_CMD
{
    ONCE = 0,REPEAT
};

typedef struct{
    enum SCI_COM sci_com_x;
    enum COM_STATUS Com_Status;
    enum TX_CMD Tx_Cmd;

    Uint16 Tx_Data[TX_BUFFER_MAX_BYTES];
    Uint16 Tx_Length;
    Uint16 Tx_Index;

    Uint16 Rx_Data[RX_BUFFER_MAX_BYTES];
    Uint16 Wr_Index;
    Uint16 Analysis_Index;
    Uint16 Rx_Idle_Count;
}SCI_COM_Struct;

extern SCI_COM_Struct sci_com_b;

void Init_Sci_b_Gpio(void);
void Init_Sci_b(void);
void Init_Sci_Com_From_Struct(enum SCI_COM sci_com_x, SCI_COM_Struct *p);
void Sci_Tx_Rx(SCI_COM_Struct *p);

#endif


